import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Set;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: nn
 * Date: 2025-05-27
 * Time: 9:34
 */
public class FirstText {
    WebDriver driver = null;

    void createDriver() {
        //1.打开浏览器 使用驱动来打开
        WebDriverManager.chromedriver().setup();
        //增加浏览器配置： 创建驱动对象要强制指定访问所有的链接
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        driver = new ChromeDriver(options);
        driver.get("https://www.baidu.com");
    }

    //测试百度搜索关键词:迪丽热巴
    void test01() throws InterruptedException {
        //1.打开浏览器 使用驱动来打开
        WebDriverManager.chromedriver().setup();
        //添加浏览器配置： 创建驱动对象要强制指定允许访问所有的链接
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        WebDriver driver = new ChromeDriver(options);
        Thread.sleep(3000);

        //2.输⼊百度⽹址:https://www.baidu.com
        driver.get("https://www.baidu.com");
        Thread.sleep(3000);

        //3、找到输⼊框并输⼊“迪丽热巴”
        driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
        Thread.sleep(3000);

        //4、找到“百度⼀下”按钮并点击
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(3000);

        //5、关闭浏览器
        driver.quit();
    }
//2024-07-10自动化概念代码结束
//===================================================================================

    //元素定位
    void test02() throws InterruptedException {
        createDriver();
        //选择器
        driver.findElement(By.cssSelector("#s-hotsearch-wrapper > div"));
        driver.findElement(By.xpath("//*[@id=\"s-hotsearch-wrapper\"]/div"));
        List<WebElement> ll = driver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));
        for (int i = 0; i < 6; i++) {
            //获取元素Ele对应的文本
            System.out.println(ll.get(i).getText());
        }
        Thread.sleep(8000);
        driver.quit();//是 Selenium WebDriver 中的一个方法，用于 完全关闭浏览器会话并释放相关资源。
    }

    //操作元素
    void test03() throws InterruptedException {
        createDriver();

        //任何区域都可以进行点击
//        WebElement ele= driver.findElement(By.cssSelector("#head_wrapper"));
//        ele.click();

        //不可点击元素/隐藏元素
//        driver.findElement(By.cssSelector("#form > input[type=hidden]:nth-child(5)")).click();

        //模拟按键输入
//        driver.findElement(By.cssSelector("#kw")).sendKeys("比特111");

//        2.3清除文本内容
//        WebElement ele= driver.findElement(By.cssSelector("#kw"));//找到百度输入框
//        ele.sendKeys("Java110期");
//        Thread.sleep(3000);
//        ele.clear();
//        Thread.sleep(3000);
//        ele.sendKeys("Java111期");

        //获取百度一下按钮上的文本信息
//        WebElement ele = driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(2) > a > span.title-content-title"));
//        System.out.println(ele.getText());

        //2.4获取百度一下按钮上的文本
//        String text = driver.findElement(By.cssSelector("#su")).getText();//该文本是属性所以访问不到
//
//        String text = driver.findElement(By.cssSelector("#su")).getAttribute("value");
//        System.out.println("百度一下按钮上的文字为："+text);

        //2.5获取当前页面标题和URL,来进行页面测试
        String title = driver.getTitle();
        String url = driver.getCurrentUrl();
        System.out.println("title:"+title);
        System.out.println("url:"+url);

        driver.quit();
    }

    //进阶版的屏幕截屏
    void getScreenShot(String str) throws IOException {
        //      ./src/test/image/
        //                      /2024-07-17/
        //                                 /test01-174530.pgn
        //                                 /test02-174530.pgn
        //                      /2024-07-18/
        //                                   /test01-174530.pgn
        //                                   /test02-174530.pgn
        //3.3屏幕截图
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");//年月日
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");//时分秒

        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim2.format(System.currentTimeMillis());

        //./src/test/image/2024-07-17/test01-174530.png
        String fileName = "./src/test/image/"+ dirTime + "/" + str + "-" + fileTime + ".png";
        System.out.println("filename:"+fileName);
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(fileName));
    }

    void test04() throws InterruptedException, IOException {
        createDriver();
        //        3.2设置窗口大小
//        driver.manage().window().maximize();
//
//        driver.manage().window().minimize();
//
//        driver.manage().window().fullscreen();
//
//        driver.manage().window().setSize(new Dimension(1024, 768));

        System.out.println("切换前的文本:"+driver.getTitle());
        //点击新闻
        driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();

        String curHandle = driver.getWindowHandle();
        System.out.println(curHandle);

        Set<String> allHandles = driver.getWindowHandles();
        System.out.println("=================================");

        //3.1切换窗口
        for (String handle : allHandles) {
            if (!handle.equals(curHandle)) {
                driver.switchTo().window(handle);
            }
        }
        System.out.println("切换后的文本:"+driver.getTitle());
/*        //3.3屏幕截图
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File("my.png"));*/


        //测试百度询问
        // driver.findElement(By.cssSelector("#headline-tabs > ul > li > a"));
        // Thread.sleep(6000);

        getScreenShot(getClass().getName());
        //测试百度询问
        driver.findElement(By.cssSelector("#headline-tabs > ul > li > a"));
        System.out.println("allhandle:"+ allHandles);

        Thread.sleep(2000);
        driver.close();//关闭当前的标签页
        Thread.sleep(2000);

        //切换窗口
        Set<String> Handles = driver.getWindowHandles();
        System.out.println("=================================");

        for (String handle : Handles) {
            System.out.println("handle:"+ handle);
            if (!handle.equals(Handles)) {
                driver.switchTo().window(handle);
            }
        }
        driver.close();;
        driver.quit();
    }
    //Java2024-07-18 自动化函数结束
    // =======================================================================================
}
